﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using QuanLyDeTaiKHCN.Obj_class;
namespace QuanLyDeTaiKHCN.Export
{
    public partial class Mau3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblcontent.Text = BindData1();

            Response.Clear();
            Response.AddHeader("content-disposition", "attachment; filename=Mau3.xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.xls";
            System.IO.StringWriter stringWrite = new System.IO.StringWriter();
            System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            this.RenderControl(htmlWrite);
            Response.Write(stringWrite.ToString());
            Response.End();
            Response.Redirect("javascript:window.close()");

        }
        protected string BindData1()
        {
            _dbDataContext _db = new _dbDataContext();
            SecurityLib.Sec_AES _ps = new SecurityLib.Sec_AES();
            string str = Request.QueryString["id"].Replace(" ", "+");
            string madetai = _ps.Decrypt(str, "gold", 128);
            var dsdetai = _db.tblDanhSachDeTaiDuAns.Single(r => r.MaDeTaiDuAn.Trim() == madetai);
            var dsgiahandetai = _db.tblGiaHanDeTais.Where(r => r.MaDeTai.Trim() == madetai).ToList();
            var dsfile = _db.tblFiles.Where(r => r.MaDeTaiDuAn.Trim() == madetai && r.FileCuaBuoc == 1).ToList();
            var dsbangiaosanpham = _db.tblBanGiaoSanPhams.Where(r => r.MaDeTai.Trim() == madetai).ToList();
            var dskiemtratiendokinhphi = _db.tblKiemTraTienDoKinhPhis.Where(r => r.MaDeTai.Trim() == madetai).ToList();
            var dskiemtratiendodetai = _db.tblKiemTraTienDos.Where(r => r.MaDeTai.Trim() == madetai).ToList();
            int tongkinhphi = 0;
            try
            {
                tongkinhphi = int.Parse(dsdetai.TongKinhPhi.ToString());
            }
            catch { }
            string st = "";
            bool thamquyenso;
            if (dsdetai.LinhVuc == 1)
            {
                if (tongkinhphi <= 600000000)
                    thamquyenso = true;
                else
                    thamquyenso = false;
            }
            else
            {
                if (tongkinhphi <= 300000000)
                    thamquyenso = true;
                else
                    thamquyenso = false;
            }
            if (thamquyenso == true)
            {
                st = "/QĐ-SKHCN";
            }
            else
            {
                st = "/QĐ-UBND";
            }
            string strHTML = "";
            strHTML += "<tr><td colspan=10 style=border:0px;font-size:1.2em>Tên " + (dsdetai.Loai == 1 ? "đề tài" : "dự án") + ": " + dsdetai.TenDeTaiDuAn + "</td></tr>";
            strHTML += "<tr><td colspan=10 style=border:0px;>Đơn vị chủ trì: " + dsdetai.TenDonViChuTri + "</td></tr>";
            strHTML += "<tr><td colspan=10 style=border:0px;>Chủ nhiệm đề tài: "+dsdetai.ChuNhiemDeTai+" Điện thoại: "+dsdetai.DienThoaiDiDong+" Email:"+dsdetai.Email+"</td></tr>";
            try
            {
                var dspheduyetdetai = _db.tblPheDuyetDeTais.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<tr><td colspan=10 style=border:0px;>Quyết định phê duyệt số:" + dspheduyetdetai.SoQuyetDinh + " Ngày:" + string.Format("{0:dd/MM/yyyy}", dspheduyetdetai.NgayQD) + " Thuộc danh mục năm: " + dsdetai.ThoiGianBanHanhDanhMuc + "</td></tr>";
            }
            catch
            {
                strHTML += "<tr><td colspan=10 style=border:0px;>Quyết định phê duyệt số: Ngày: Thuộc danh mục năm: </td></tr>";
            }
            try
            {
                var dstheodoihopdong = _db.tblTheoDoiHopDongs.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<tr><td colspan=10 style=border:0px;>Hợp đồng NCKH-PTCN số: " + dstheodoihopdong.SoHopDong.Trim() + "/HĐ-SKHCN, ngày " + string.Format("{0:dd/MM/yyyy}", dstheodoihopdong.NgayHopDong) + "</td></tr>";
                string[] phulucs = dstheodoihopdong.PhuLucHopDong.Split('@');
                string[] phuluc = phulucs[0].Split('!');
                strHTML += "<tr><td colspan=10 style=border:0px;>"+"Phụ lục hợp đồng số: "+phuluc[0]+"/PLHĐ-SKHCN"+phuluc[1]+" Nội dung:"+phuluc[2]+"</td></tr>";
                phuluc = phulucs[1].Split('!');
                strHTML += "<tr><td colspan=10 style=border:0px;>" + "Phụ lục hợp đồng số: " + phuluc[0] + "/PLHĐ-SKHCN" + phuluc[1] + " Nội dung:" + phuluc[2] + "</td></tr>";
                phuluc = phulucs[2].Split('!');
                strHTML += "<tr><td colspan=10 style=border:0px;>" + "Phụ lục hợp đồng số: " + phuluc[0] + "/PLHĐ-SKHCN" + phuluc[1] + " Nội dung:" + phuluc[2] + "</td></tr>";
            }
            catch
            {
                strHTML += "<tr><td colspan=10 style=border:0px;>Hợp đồng NCKH-PTCN số: /HĐ-SKHCN, ngày </td></tr>";
                strHTML += "<tr><td colspan=10 style=border:0px;padding:0px;>" + "Phụ lục hợp đồng số: /PLHĐ-SKHCN .Nội dung:</td></tr>";
                strHTML += "<tr><td colspan=10 style=border:0px;padding:0px;>" + "Phụ lục hợp đồng số: /PLHĐ-SKHCN .Nội dung:</td></tr>";
                strHTML += "<tr><td colspan=10 style=border:0px;padding:0px;>" + "Phụ lục hợp đồng số: /PLHĐ-SKHCN .Nội dung:</td></tr>";
                strHTML += "<tr><td colspan=10 style=border:0px;padding:0px;>" + "Phụ lục hợp đồng số: /PLHĐ-SKHCN .Nội dung:</td></tr>";
            }
            strHTML += "<tr><td colspan=10 style=border:0px;>Thời gian thực hiện: " + _db.TinhSoThang(madetai, dsdetai.ThoiGianThucHienTu, dsdetai.ThoiGianThucHienDen).ToString() + " tháng, từ " + string.Format("{0:dd/MM/yyyy}", dsdetai.ThoiGianThucHienTu) + " đến " + string.Format("{0:dd/MM/yyyy}", dsdetai.ThoiGianThucHienDen) + "</td></tr>";
            //tinh gia han
            foreach (var item in dsgiahandetai)
            {
                strHTML += "<tr><td colspan=10 style=border:0px;>Gia hạn lần " + item.Lan.ToString() + ": Công văn đồng ý gia hạn số: " + item.SoQuyetDinhDongYGiaHan + "/SKHCN-QLKH ngày " + string.Format("{0:dd/MM/yyyy}", item.NgayQuyetDinhDongYGiaHan) + "</td></tr>";
            }

            strHTML += "<tr><td colspan=10 style=border:0px;><br/>Cán bộ trực tiếp quản lý: " + dsdetai.tblAcount.TenHienThi + "</td></tr>";


            strHTML += "<tr><td colspan=10 style=border:0px;><br/>Theo dõi tiến độ thực hiện</td></tr>";
            strHTML += "<tr style=text-align:center;><td>Lần</td>";
            strHTML += "<td style=width:101px;>Thời gian nhận TMĐC</td>";
            strHTML += "<td style=width:101px;>Thời gian họp HĐXC</td>";
            strHTML += "<td style=width:101px;>Thời gian nhận TMĐC sau HĐXC</td>";
            strHTML += "<td style=width:101px;>Thời gian thẩm định KP/QĐ hành lập tổ</td>";
            strHTML += "<td colspan=2>Thời gian ban hành danh mục của UBND</td>";
            strHTML += "<td colspan=2>Các giai đoạn thực hiện theo hợp đồng</td>";
            strHTML += "<td style=width:102px;>Ghi chú</td></tr>";
            //cac giai doan thuc hien  hop dong
            strHTML += "<tr><td style=text-align:center;>1</td>";
            try
            {
                if (_db.Tinhsongay(dsfile[0].NgayNhanThuyetMinh) > _db.Tinhsongay(dsfile[1].NgayNhanThuyetMinh))
                {
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsfile[1].NgayNhanThuyetMinh) + "</td>";
                }
                else
                {
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsfile[0].NgayNhanThuyetMinh) + "</td>";
                }
                try
                {
                    var dsthoigianxetchon = _db.tblHopHoiDongs.Single(r => r.MaDeTai.Trim() == madetai);
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsthoigianxetchon.NgayHopHoiDong) + "</td>";
                }
                catch { strHTML += "<td></td>"; }
                if (_db.Tinhsongay(dsfile[0].NgayNhanThuyetMinh) > _db.Tinhsongay(dsfile[1].NgayNhanThuyetMinh))
                {
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsfile[0].NgayNhanThuyetMinh) + "</td>";
                }
                else
                {
                    strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsfile[1].NgayNhanThuyetMinh) + "</td>";
                }
            }
            catch
            {
                strHTML += "<td></td>";
                strHTML += "<td></td>";
                strHTML += "<td></td>";
            }
            try
            {
                var dsthamdinhkinhphi = _db.tblThamDinhKinhPhis.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsthamdinhkinhphi.NgayThamDinh) + "/" + dsthamdinhkinhphi.SoQuyetDinh + "</td>";
            }
            catch
            {
                strHTML += "<td></td>";
            }
            strHTML += "<td colspan=2>" + dsdetai.ThoiGianBanHanhDanhMuc + "</td>";
            try
            {
                var dstheodoihopdong = _db.tblTheoDoiHopDongs.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<td colspan=2>" + dstheodoihopdong.GiaiDoanThucHien.Split('@')[0].Split('!')[0] + " - " + dstheodoihopdong.GiaiDoanThucHien.Split('@')[0].Split('!')[1] + "</td>";
                strHTML += "<td style=width:50px;></td></tr>";
                for (int i = 1; i < dstheodoihopdong.GiaiDoanThucHien.Split('@').Length - 1; i++)
                {
                    strHTML += "<tr><td style=text-align:center;>" + (i + 1).ToString() + "</td>";
                    strHTML += "<td></td>";
                    strHTML += "<td></td>";
                    strHTML += "<td></td>";
                    strHTML += "<td></td>";
                    strHTML += "<td colspan=2></td>";
                    if (dstheodoihopdong.GiaiDoanThucHien.Split('@')[i].Split('!')[0].Length != 0)
                    {
                        strHTML += "<td colspan=2>" + dstheodoihopdong.GiaiDoanThucHien.Split('@')[i].Split('!')[0] + " - " + dstheodoihopdong.GiaiDoanThucHien.Split('@')[i].Split('!')[1] + "</td>";
                    }
                    else
                    {
                        strHTML += "<td colspan=2></td>";
                    }
                    strHTML += "<td></td></tr>";
                }
            }
            catch
            {
            }
            //theo doi tien do thuc hien phan 2
            strHTML += "<tr><td colspan=10 style=border:0px;><br/>Theo dõi tiến độ thực hiện</td></tr>";
            strHTML += "<tr style=text-align:center;><td style=text-align:center;width:50px;>Lần</td>";
            strHTML += "<td>Thời gian nhận BCTK</td>";
            strHTML += "<td>Thời gian họp HĐNT</td>";
            strHTML += "<td>Thời gian nhận BCNT Hoàn chỉnh</td>";
            strHTML += "<td>Thanh lý HĐ</td>";
            strHTML += "<td style=width:105px;>Thời gian nhận đăng ký kết quả</td>";
            strHTML += "<td style=width:105px;>Quyết định công nhận kết quả</td>";
            strHTML += "<td style=width:101px;>Ngày bàn giao kết quả</td>";
            strHTML += "<td style=width:101px;>Số ký hiệu lưu kho</td>";
            strHTML += "<td style=width:50px>Ghi chú</td></tr>";
            //==================================
            strHTML += "<tr><td style=text-align:center;>1</td>";
            try
            {
                var dshoptochuyengia = _db.tblHopToChuyenGias.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dshoptochuyengia.NgayNhanBCTKTCG) + "</td>";
            }
            catch { strHTML += "<td></td>"; }
            try
            {
                var dshopdoidongnghiemthu = _db.tblHopHoiDongNghiemThus.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dshopdoidongnghiemthu.NgayHopHoiDong) + "</td>";
            }
            catch { strHTML += "<td></td>"; }
            try
            {
                var dsquanlydetaisaunghiemthu = _db.tblQuanLyDeTaiSauNghiemThus.Single(r => r.MaDeTai.Trim() == madetai);
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsquanlydetaisaunghiemthu.NgayNhanBCNT) + "</td>";
                strHTML += "<td>" + dsquanlydetaisaunghiemthu.SoTLHD + " - " + string.Format("{0:dd/MM/yyyy}", dsquanlydetaisaunghiemthu.NgayTLHD) + "</td>";
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsbangiaosanpham.First().NgayDangKyKetQuan) + "</td>";
                strHTML += "<td>" + dsquanlydetaisaunghiemthu.SoQDCNKQ + " - " + string.Format("{0:dd/MM/yyyy}", dsquanlydetaisaunghiemthu.NgayQDCNKQ) + "</td>";
            }
            catch
            {
                strHTML += "<td></td>";
                strHTML += "<td></td>";
                strHTML += "<td></td>";
                strHTML += "<td></td>";

            }
            if (dsbangiaosanpham.Count() != 0)
            {
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsbangiaosanpham.First().NgayGiao) + "</td>";
            }
            else
            {
                strHTML += "<td></td>";
            }
            strHTML += "<td></td>";
            strHTML += "<td></td></tr>";
            //=============================
            for (int i = 1; i < dsbangiaosanpham.Count(); i++)
            {
                strHTML += "<tr><td style=text-align:center;>" + (i + 1).ToString() + "</td>";
                strHTML += "<td></td>";
                strHTML += "<td></td>";
                strHTML += "<td></td>";
                strHTML += "<td></td>";
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsbangiaosanpham[i].NgayDangKyKetQuan) + "</td>";
                strHTML += "<td></td>";
                strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dsbangiaosanpham[i].NgayGiao) + "</td>";
                strHTML += "<td></td>";
                strHTML += "<td></td></tr>";
            }

            //theo doi tien do cap kinh phi
            strHTML += "<tr><td colspan=10 style=border:0px;><br/>Theo dõi tiến độ cấp kinh phí</td></tr>";
            strHTML += "<tr style=text-align:center;><td style=text-align:center;>Đợt</td>";
            strHTML += "<td>Kinh phí giai đoạn theo hợp đồng (đ)</td>";
            strHTML += "<td>Thời gian cấp theo hợp đồng</td>";
            strHTML += "<td>Biên bản kiểm tra tiến độ (Ngày kiểm tra)</td>";
            strHTML += "<td>Biên bản quyết toán kinh phí giai đoạn (Ngày quyết toán)</td>";
            strHTML += "<td>Kinh phí được quyết toán theo giai đoạn (đ)</td>";
            strHTML += "<td>Kinh phí thực chuyển (đ)</td>";
            strHTML += "<td>Ngày ký chuyển kinh phí</td>";
            strHTML += "<td>Phòng QLKH ký theo dõi</td>";
            strHTML += "<td>Lãnh đạo sở ký theo dõi</td></tr>";
            //==============================
            int tongkinhphigiaidoantheohopdong = 0;
            try
            {
                var dstheodoihopdong = _db.tblTheoDoiHopDongs.Single(r => r.MaDeTai.Trim() == madetai);
                string[] arr = dstheodoihopdong.GiaiDoanThucHien.Split('@');

                for (int i = 0; i < arr.Length - 1; i++)
                {
                    strHTML += "<tr><td style=text-align:center;>" + (i + 1).ToString() + "</td>";
                    try
                    {
                        strHTML += "<td style=text-align:right;>" + string.Format("{0:#,##}", int.Parse(arr[i].Split('!')[2])) + "</td>";
                    }
                    catch { strHTML += "<td></td>"; }
                    //======================
                    try
                    {
                        tongkinhphigiaidoantheohopdong += int.Parse(arr[i].Split('!')[2]);
                    }
                    catch { }
                    try
                    {
                        //strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dskiemtratiendokinhphi.Single(r => r.GiaiDoan == i + 1).NgayChuyenKinhPhi) + "</td>";
                        strHTML += "<td>" + arr[i].Split('!')[0] + " - " + arr[i].Split('!')[1] + "</td>";
                    }
                    catch { strHTML += "<td></td>"; }
                    try
                    {
                        strHTML += "<td>" + dskiemtratiendodetai.Single(r => r.GiaiDoan == i + 1).SoBienBanKiemTra + " ( " + string.Format("{0:dd/MM/yyyy}", dskiemtratiendodetai.Single(r => r.GiaiDoan == i + 1).NgayKiemTra) + " ) " + "</td>";
                    }
                    catch
                    {
                        strHTML += "<td></td>";
                    }
                    try
                    {
                        strHTML += "<td>" + dskiemtratiendokinhphi.Single(r => r.GiaiDoan == i + 1).SoBienBanQuyetToanKinhPhi + " ( " + string.Format("{0:dd/MM/yyyy}", dskiemtratiendokinhphi.Single(r => r.GiaiDoan == i + 1).NgayQuyetToan) + " ) " + "</td>";
                    }
                    catch
                    {
                        strHTML += "<td></td>";
                    }
                    try
                    {
                        strHTML += "<td style=text-align:right;>" + string.Format("{0:#,##}", dskiemtratiendokinhphi.Single(r => r.GiaiDoan == i + 1).KinhPhiQuyetToan) + "</td>";
                    }
                    catch
                    {
                        strHTML += "<td></td>";
                    }
                    try
                    {
                        strHTML += "<td style=text-align:right;>" + string.Format("{0:#,##}", dskiemtratiendokinhphi.Single(r => r.GiaiDoan == i + 1).KinhPhiThucChuyen) + "</td>";
                    }
                    catch
                    {
                        strHTML += "<td></td>";
                    }
                    try
                    {
                        strHTML += "<td>" + string.Format("{0:dd/MM/yyyy}", dskiemtratiendokinhphi.Single(r => r.GiaiDoan == i + 1).NgayChuyenKinhPhi) + "</td>";
                    }
                    catch
                    {
                        strHTML += "<td></td>";
                    }
                    strHTML += "<td></td>";
                    strHTML += "<td></td></tr>";
                }
            }
            catch { }
            //=======================================
            strHTML += "<tr style=text-align:center;><td style=text-align:center;>Cộng</td>";
            strHTML += "<td>" + string.Format("{0:#,##}", tongkinhphigiaidoantheohopdong) + "</td>";
            strHTML += "<td></td>";
            strHTML += "<td></td>";
            strHTML += "<td></td>";
            strHTML += "<td>" + string.Format("{0:#,##}", dskiemtratiendokinhphi.Sum(r => r.KinhPhiQuyetToan)) + "</td>";
            strHTML += "<td>" + string.Format("{0:#,##}", dskiemtratiendokinhphi.Sum(r => r.KinhPhiThucChuyen)) + "</td>";
            strHTML += "<td></td>";
            strHTML += "<td></td>";
            strHTML += "<td></td></tr>";
            //=======================================//
            strHTML += "<tr style=border-top:0px;><td colspan=10 style=border:0px;><br/>Ghi chú:</td></tr>";
            return strHTML;
        }


    }
}